-- XSD schema extracted from ITU-T Z.151 (11/2008)
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
== XML Schema for the User Requirements Notation (Recommendation ITU-T Z.151)
== Version: 20120112
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified"
elementFormDefault="qualified">
<!-- ========================== -->
<!-- ===== Root Element ===== -->
<!-- ========================== -->
<xsd:element name="URNspec" type="URNspec"/>
<!-- ================================================== -->
<!-- ============ Simple Type Definitions ============ -->
<!-- ================================================== -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- ComponentKind -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:simpleType name="ComponentKind">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Team"/>
<xsd:enumeration value="Object"/>
<xsd:enumeration value="Process"/>
<xsd:enumeration value="Agent"/>
<xsd:enumeration value="Actor"/>
</xsd:restriction>
</xsd:simpleType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- ContributionType -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:simpleType name="ContributionType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Make"/>
<xsd:enumeration value="Help"/>
<xsd:enumeration value="SomePositive"/>
<xsd:enumeration value="Unknown"/>
<xsd:enumeration value="SomeNegative"/>
<xsd:enumeration value="Hurt"/>
<xsd:enumeration value="Break"/>
</xsd:restriction>
</xsd:simpleType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- DatatypeKind -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:simpleType name="DatatypeKind">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Boolean"/>
<xsd:enumeration value="Integer"/>
<xsd:enumeration value="Enumeration"/>
</xsd:restriction>
</xsd:simpleType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- DecompositionType -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:simpleType name="DecompositionType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="AND"/>
<xsd:enumeration value="XOR"/>
<xsd:enumeration value="IOR"/>
</xsd:restriction>
</xsd:simpleType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- DeviceKind -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:simpleType name="DeviceKind">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Processor"/>
<xsd:enumeration value="Disk"/>
<xsd:enumeration value="DSP"/>
</xsd:restriction>
</xsd:simpleType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- ImportanceType -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:simpleType name="ImportanceType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="High"/>
<xsd:enumeration value="Medium"/>
<xsd:enumeration value="Low"/>
<xsd:enumeration value="None"/>
</xsd:restriction>
</xsd:simpleType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- IntentionalElementType -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:simpleType name="IntentionalElementType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Softgoal"/>
<xsd:enumeration value="Goal"/>
<xsd:enumeration value="Task"/>
<xsd:enumeration value="Resource"/>
<xsd:enumeration value="Belief"/>
</xsd:restriction>
</xsd:simpleType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- QualitativeLabel -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:simpleType name="QualitativeLabel">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Denied"/>
<xsd:enumeration value="WeaklyDenied"/>
<xsd:enumeration value="WeaklySatisfied"/>
<xsd:enumeration value="Satisfied"/>
<xsd:enumeration value="Conflict"/>
<xsd:enumeration value="Unknown"/>
<xsd:enumeration value="None"/>
</xsd:restriction>
</xsd:simpleType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- TimeUnit -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:simpleType name="TimeUnit">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="year"/>
<xsd:enumeration value="day"/>
<xsd:enumeration value="h"/>
<xsd:enumeration value="s"/>
<xsd:enumeration value="ms"/>
<xsd:enumeration value="us"/>
<xsd:enumeration value="ns"/>
</xsd:restriction>
</xsd:simpleType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- WaitKind -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:simpleType name="WaitKind">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Transient"/>
<xsd:enumeration value="Persistent"/>
</xsd:restriction>
</xsd:simpleType>
<!-- ================================================== -->
<!-- ============ Complex Type Definitions =========== -->
<!-- ================================================== -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- ActiveResource -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="ActiveResource">
<xsd:complexContent>
<xsd:extension base="GeneralResource">
<xsd:sequence>
<xsd:element name="opTime" type="xsd:string"/>
<xsd:element default="ms" name="unit" type="TimeUnit"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Actor -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Actor">
<xsd:complexContent>
<xsd:extension base="GRLLinkableElement">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="collapsedRefs" type="xsd:IDREF"/>
<!-- CollapsedActorRef -->
<xsd:element maxOccurs="unbounded" minOccurs="0" name="actorRefs" type="xsd:IDREF"/> <!-- ActorRef -->
<xsd:element minOccurs="0" name="style" type="ConcreteStyle"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="elems" type="xsd:IDREF"/>
<!-- IntentionalElement -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- ActorRef -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="ActorRef">
<xsd:complexContent>
<xsd:extension base="GRLmodelElement">
<xsd:sequence>
<xsd:element name="label" type="Label"/>
<xsd:element name="actorDef" type="xsd:IDREF"/> <!-- Actor -->
<xsd:element maxOccurs="unbounded" minOccurs="0" name="nodes" type="xsd:IDREF"/> <!-- GRLNode -->
<xsd:element name="pos" type="Position"/>
<xsd:element name="size" type="Size"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- AndFork -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="AndFork">
<xsd:complexContent>
<xsd:extension base="PathNode"/>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- AndJoin -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="AndJoin">
<xsd:complexContent>
<xsd:extension base="PathNode"/>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- ClosedWorkload -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="ClosedWorkload">
<xsd:complexContent>
<xsd:extension base="Workload">
<xsd:sequence>
<xsd:element name="population" type="xsd:string"/>
<xsd:element name="externalDelay" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- CollapsedActorRef -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="CollapsedActorRef">
<xsd:complexContent>
<xsd:extension base="GRLNode">
<xsd:sequence>
<xsd:element name="actor" type="xsd:IDREF"/> <!-- Actor -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Comment -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Comment">
<xsd:sequence>
<xsd:element name="description" type="xsd:string"/>
<xsd:element name="x" type="xsd:integer"/>
<xsd:element name="y" type="xsd:integer"/>
<xsd:element name="width" type="xsd:integer"/>
<xsd:element name="height" type="xsd:integer"/>
<xsd:element name="fillColor" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Component -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Component">
<xsd:complexContent>
<xsd:extension base="UCMmodelElement">
<xsd:sequence>
<xsd:element name="kind" type="ComponentKind"/>
<xsd:element name="protected" type="xsd:boolean"/>
<xsd:element name="context" type="xsd:boolean"/>
<xsd:element minOccurs="0" name="type" type="xsd:IDREF"/> <!-- ComponentType -->
<xsd:element maxOccurs="unbounded" minOccurs="0" name="includedComponents" type="xsd:IDREF"/>
<!-- Component -->
<xsd:element maxOccurs="unbounded" minOccurs="0" name="includingComponents" type="xsd:IDREF"/>
<!-- Component -->
<xsd:element minOccurs="0" name="host" type="xsd:IDREF"/> <!-- ProcessingResource -->
<xsd:element minOccurs="0" name="resource" type="xsd:IDREF"/> <!-- PassiveResource -->
<xsd:element maxOccurs="unbounded" minOccurs="0" name="compRefs" type="xsd:IDREF"/>
<!-- ComponentRef -->
<xsd:element minOccurs="0" name="style" type="ConcreteStyle"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- ComponentBinding -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="ComponentBinding">
<xsd:sequence>
<xsd:element name="id" type="xsd:ID" /> <!-- ADDED because ComponentBinding is not a URNmodelElement (no ID) -->
<xsd:element name="parentComponent" type="xsd:IDREF"/> <!-- ComponentRef -->
<xsd:element name="pluginComponent" type="xsd:IDREF"/> <!-- ComponentRef -->
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- ComponentRef -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="ComponentRef">
<xsd:complexContent>
<xsd:extension base="UCMmodelElement">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="parentBindings" type="xsd:IDREF"/>
<!-- ComponentBinding -->
<xsd:element maxOccurs="unbounded" minOccurs="0" name="pluginBindings" type="xsd:IDREF"/>
<!-- ComponentBinding -->
<xsd:element name="compDef" type="xsd:IDREF"/> <!-- Component -->
<xsd:element minOccurs="0" name="label" type="Label"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="children" type="xsd:IDREF"/> <!-- ComponentRef -->
<xsd:element minOccurs="0" name="parent" type="xsd:IDREF"/> <!-- ComponentRef -->
<xsd:element maxOccurs="unbounded" minOccurs="0" name="nodes" type="xsd:IDREF"/> <!-- PathNode -->
<xsd:element minOccurs="0" name="pos" type="Position"/>
<xsd:element minOccurs="0" name="size" type="Size"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- ComponentType -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="ComponentType">
<xsd:complexContent>
<xsd:extension base="UCMmodelElement">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="instances" type="xsd:IDREF"/> <!-- Component -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Concern -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Concern">
<xsd:complexContent>
<xsd:extension base="URNmodelElement">
<xsd:sequence>
<xsd:element minOccurs="0" name="condition" type="Condition"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="elements" type="xsd:IDREF"/>
<!-- URNmodelElement -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- ConcreteCondition -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="ConcreteCondition">
<xsd:sequence>
<xsd:element name="label" type="xsd:string"/>
<xsd:element name="description" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- ConcreteGRLspec -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="ConcreteGRLspec">
<xsd:sequence>
<xsd:element name="showAsMeansEnd" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- ConcreteStyle -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="ConcreteStyle">
<xsd:sequence>
<xsd:element name="lineColor" type="xsd:string"/>
<xsd:element name="fillColor" type="xsd:string"/>
<xsd:element name="filled" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- ConcreteURNspec -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="ConcreteURNspec">
<xsd:sequence>
<xsd:element name="description" type="xsd:string"/>
<xsd:element name="author" type="xsd:string"/>
<xsd:element name="created" type="xsd:string"/>
<xsd:element name="modified" type="xsd:string"/>
<xsd:element name="specVersion" type="xsd:string"/>
<xsd:element name="urnVersion" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Condition -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Condition">
<xsd:sequence>
<xsd:element name="expression" type="xsd:string"/>
<xsd:element minOccurs="0" name="desc" type="ConcreteCondition"/>
<xsd:element minOccurs="0" name="label" type="Label"/>
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Connect -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Connect">
<xsd:complexContent>
<xsd:extension base="PathNode"/>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Contribution -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Contribution">
<xsd:complexContent>
<xsd:extension base="ElementLink">
<xsd:sequence>
<xsd:element default="Unknown" name="contribution" type="ContributionType"/>
<xsd:element name="quantitativeContribution" type="xsd:integer"/>
<xsd:element name="correlation" type="xsd:boolean"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Decomposition -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Decomposition">
<xsd:complexContent>
<xsd:extension base="ElementLink"/>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Demand -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Demand">
<xsd:sequence>
<xsd:element name="quantity" type="xsd:string"/>
<xsd:element name="resource" type="xsd:IDREF"/> <!-- ExternalOperation -->
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Dependency -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Dependency">
<xsd:complexContent>
<xsd:extension base="ElementLink"/>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Description -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Description">
<xsd:sequence>
<xsd:element name="description" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- DirectionArrow -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="DirectionArrow">
<xsd:complexContent>
<xsd:extension base="PathNode"/>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- ElementLink -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="ElementLink">
<xsd:complexContent>
<xsd:extension base="GRLmodelElement">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="refs" type="xsd:IDREF"/> <!-- LinkRef -->
<xsd:element name="dest" type="xsd:IDREF"/> <!-- GRLLinkableElement -->
<xsd:element name="src" type="xsd:IDREF"/> <!-- GRLLinkableElement -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- EmptyPoint -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="EmptyPoint">
<xsd:complexContent>
<xsd:extension base="PathNode"/>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- EndPoint -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="EndPoint">
<xsd:complexContent>
<xsd:extension base="PathNode">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="outBindings" type="xsd:IDREF"/>
<!-- OutBinding -->
<xsd:element minOccurs="0" name="postcondition" type="Condition"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- EnumerationType -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="EnumerationType">
<xsd:complexContent>
<xsd:extension base="UCMmodelElement">
<xsd:sequence>
<xsd:element name="values" type="xsd:string"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="instances" type="xsd:IDREF"/> <!-- Variable -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Evaluation -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Evaluation">
<xsd:sequence>
<xsd:element name="evaluation" type="xsd:integer"/>
<xsd:element default="None" name="qualitativeEvaluation" type="QualitativeLabel"/>
<xsd:element name="intElement" type="xsd:IDREF"/> <!-- IntentionalElement -->
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- EvaluationStrategy -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="EvaluationStrategy">
<xsd:complexContent>
<xsd:extension base="GRLmodelElement">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="evaluations" type="Evaluation"/>
<xsd:element maxOccurs="unbounded" name="group" type="xsd:IDREF"/> <!-- StrategiesGroup -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- ExternalOperation -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="ExternalOperation">
<xsd:complexContent>
<xsd:extension base="ActiveResource">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="demands" type="xsd:IDREF"/> <!-- Demand -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- GeneralResource -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="GeneralResource">
<xsd:complexContent>
<xsd:extension base="UCMmodelElement">
<xsd:sequence>
<xsd:element default="1" name="multiplicity" type="xsd:nonNegativeInteger"/>
<xsd:element name="schedPolicy" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- GRLGraph -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="GRLGraph">
<xsd:complexContent>
<xsd:extension base="GRLmodelElement">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="connections" type="LinkRef"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="nodes" type="GRLNode"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="contRefs" type="ActorRef"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="comments" type="Comment"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- GRLLinkableElement -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="GRLLinkableElement">
<xsd:complexContent>
<xsd:extension base="GRLmodelElement">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="linksDest" type="xsd:IDREF"/> <!-- ElementLink -->
<xsd:element maxOccurs="unbounded" minOccurs="0" name="linksSrc" type="xsd:IDREF"/> <!-- ElementLink -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- GRLmodelElement -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="GRLmodelElement">
<xsd:complexContent>
<xsd:extension base="URNmodelElement"/>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- GRLNode -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="GRLNode">
<xsd:complexContent>
<xsd:extension base="GRLmodelElement">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="pred" type="xsd:IDREF"/> <!-- LinkRef -->
<xsd:element maxOccurs="unbounded" minOccurs="0" name="succ" type="xsd:IDREF"/> <!-- LinkRef -->
<xsd:element minOccurs="0" name="contRef" type="xsd:IDREF"/> <!-- ActorRef -->
<xsd:element name="pos" type="Position"/>
<xsd:element name="size" type="Size"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- GRLspec -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="GRLspec">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="intElements" type="IntentionalElement"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="actors" type="Actor"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="links" type="ElementLink"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="groups" type="StrategiesGroup"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="strategies" type="EvaluationStrategy"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="grlGraphs" type="GRLGraph"/>
<xsd:element minOccurs="0" name="info" type="ConcreteGRLspec"/>
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- InBinding -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="InBinding">
<xsd:sequence>
<xsd:element name="id" type="xsd:ID" /> <!-- ADDED because InBinding is not a URNmodelElement (no ID) -->
<xsd:element name="startPoint" type="xsd:IDREF"/> <!-- StartPoint -->
<xsd:element name="stubEntry" type="xsd:IDREF"/> <!-- NodeConnection -->
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Initialization -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Initialization">
<xsd:sequence>
<xsd:element name="value" type="xsd:string"/>
<xsd:element name="variable" type="xsd:IDREF"/> <!-- Variable -->
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- IntentionalElement -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="IntentionalElement">
<xsd:complexContent>
<xsd:extension base="GRLLinkableElement">
<xsd:sequence>
<xsd:element name="type" type="IntentionalElementType"/>
<xsd:element default="AND" name="decompositionType" type="DecompositionType"/>
<xsd:element default="None" name="importance" type="ImportanceType"/>
<xsd:element name="importanceQuantitative" type="xsd:integer"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="refs" type="xsd:IDREF"/>
<!-- IntentionalElementRef -->
<xsd:element minOccurs="0" name="style" type="ConcreteStyle"/>
<xsd:element minOccurs="0" name="actor" type="xsd:IDREF"/> <!-- Actor -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- IntentionalElementRef -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="IntentionalElementRef">
<xsd:complexContent>
<xsd:extension base="GRLNode">
<xsd:sequence>
<xsd:element name="def" type="xsd:IDREF"/> <!-- IntentionalElement -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Label -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Label">
<xsd:sequence>
<xsd:element name="deltaX" type="xsd:integer"/>
<xsd:element name="deltaY" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- LinkRef -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="LinkRef">
<xsd:complexContent>
<xsd:extension base="GRLmodelElement">
<xsd:sequence>
<xsd:element name="curve" type="xsd:boolean"/>
<xsd:element name="link" type="xsd:IDREF"/> <!-- ElementLink -->
<xsd:element maxOccurs="unbounded" minOccurs="0" name="bendpoints" type="LinkRefBendpoint"/>
<!-- {ordered} -->
<xsd:element minOccurs="0" name="label" type="Label"/>
<xsd:element name="target" type="xsd:IDREF"/> <!-- GRLNode -->
<xsd:element name="source" type="xsd:IDREF"/> <!-- GRLNode -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- LinkRefBendpoint -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="LinkRefBendpoint">
<xsd:sequence>
<xsd:element name="x" type="xsd:integer"/>
<xsd:element name="y" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Metadata -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Metadata">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="value" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- NodeConnection -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="NodeConnection">
<xsd:sequence>
<xsd:element name="id" type="xsd:ID"/> <!-- ADDED because NodeConnection is not a URNmodelElement
(no ID) -->
<xsd:element default="100" name="probability" type="xsd:nonNegativeInteger"/>
<xsd:element name="threshold" type="xsd:string"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="inBindings" type="xsd:IDREF"/> <!-- InBinding -->
<xsd:element maxOccurs="unbounded" minOccurs="0" name="outBindings" type="xsd:IDREF"/> <!-- OutBinding -->
<xsd:element minOccurs="0" name="condition" type="Condition"/>
<xsd:element minOccurs="0" name="timer" type="xsd:IDREF"/> <!-- Timer -->
<xsd:element minOccurs="0" name="label" type="Label"/>
<xsd:element name="target" type="xsd:IDREF"/> <!-- PathNode -->
<xsd:element name="source" type="xsd:IDREF"/> <!-- PathNode -->
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- OWPeriodic -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="OWPeriodic">
<xsd:complexContent>
<xsd:extension base="OpenWorkload">
<xsd:sequence>
<xsd:element name="period" type="xsd:string"/>
<xsd:element name="deviation" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- OWPhaseType -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="OWPhaseType">
<xsd:complexContent>
<xsd:extension base="OpenWorkload">
<xsd:sequence>
<xsd:element name="alpha" type="xsd:string"/>
<xsd:element name="s" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- OWPoisson -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="OWPoisson">
<xsd:complexContent>
<xsd:extension base="OpenWorkload">
<xsd:sequence>
<xsd:element name="mean" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- OWUniform -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="OWUniform">
<xsd:complexContent>
<xsd:extension base="OpenWorkload">
<xsd:sequence>
<xsd:element name="start" type="xsd:string"/>
<xsd:element name="end" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- OpenWorkload -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="OpenWorkload">
<xsd:complexContent>
<xsd:extension base="Workload"/>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- OrFork -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="OrFork">
<xsd:complexContent>
<xsd:extension base="PathNode"/>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- OrJoin -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="OrJoin">
<xsd:complexContent>
<xsd:extension base="PathNode"/>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- OutBinding -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="OutBinding">
<xsd:sequence>
<xsd:element name="id" type="xsd:ID" /> <!-- ADDED because OutBinding is not a URNmodelElement (no ID) -->
<xsd:element name="endPoint" type="xsd:IDREF"/> <!-- EndPoint -->
<xsd:element name="stubExit" type="xsd:IDREF"/> <!-- NodeConnection -->
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- PassiveResource -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="PassiveResource">
<xsd:complexContent>
<xsd:extension base="GeneralResource">
<xsd:sequence>
<xsd:element minOccurs="0" name="component" type="xsd:IDREF"/> <!-- Component -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- PathNode -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="PathNode">
<xsd:complexContent>
<xsd:extension base="UCMmodelElement">
<xsd:sequence>
<xsd:element minOccurs="0" name="label" type="Label"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="pred" type="xsd:IDREF"/>
<!-- NodeConnection -->
<xsd:element maxOccurs="unbounded" minOccurs="0" name="succ" type="xsd:IDREF"/>
<!-- NodeConnection -->
<xsd:element minOccurs="0" name="contRef" type="xsd:IDREF"/> <!-- ComponentRef -->
<xsd:element minOccurs="0" name="pos" type="Position"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- PluginBinding -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="PluginBinding">
<xsd:sequence>
<xsd:element name="id" type="xsd:ID"/> <!-- ADDED because PluginBinding is not a URNmodelElement (no ID) -->
<xsd:element default="100" name="probability" type="xsd:nonNegativeInteger"/>
<xsd:element name="replicationFactor" type="xsd:string"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="in" type="InBinding"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="out" type="OutBinding"/>
<xsd:element name="plugin" type="xsd:IDREF"/> <!-- UCMmap -->
<xsd:element minOccurs="0" name="precondition" type="Condition"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="components" type="ComponentBinding"/>
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Position -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Position">
<xsd:sequence>
<xsd:element name="x" type="xsd:integer"/>
<xsd:element name="y" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- ProcessingResource -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="ProcessingResource">
<xsd:complexContent>
<xsd:extension base="ActiveResource">
<xsd:sequence>
<xsd:element default="Processor" name="kind" type="DeviceKind"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="components" type="xsd:IDREF"/>
<!-- Component -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Responsibility -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Responsibility">
<xsd:complexContent>
<xsd:extension base="UCMmodelElement">
<xsd:sequence>
<xsd:element name="expression" type="xsd:string"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="demands" type="Demand"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="respRefs" type="xsd:IDREF"/> <!-- RespRef -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- RespRef -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="RespRef">
<xsd:complexContent>
<xsd:extension base="PathNode">
<xsd:sequence>
<xsd:element name="repetitionCount" type="xsd:string"/>
<xsd:element name="hostDemand" type="xsd:string"/>
<xsd:element name="respDef" type="xsd:IDREF"/> <!-- Responsibility -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- ScenarioDef -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="ScenarioDef">
<xsd:complexContent>
<xsd:extension base="UCMmodelElement">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="initializations" type="Initialization"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="postconditions" type="Condition"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="preconditions" type="Condition"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="parentScenarios" type="xsd:IDREF"/>
<!-- ScenarioDef -->
<xsd:element minOccurs="0" name="includedScenarios" type="xsd:IDREFS"/>
<!-- ScenarioDef {ordered} -->
<xsd:element maxOccurs="unbounded" name="groups" type="xsd:IDREF"/> <!-- ScenarioGroup -->
<xsd:element minOccurs="0" name="startPoints" type="xsd:IDREFS"/> <!-- StartPoint {ordered} -->
<xsd:element maxOccurs="unbounded" minOccurs="0" name="endPoints" type="xsd:IDREF"/>
<!-- EndPoint -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- ScenarioGroup -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="ScenarioGroup">
<xsd:complexContent>
<xsd:extension base="UCMmodelElement">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="scenarios" type="xsd:IDREF"/>
<!-- ScenarioDef -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Size -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Size">
<xsd:sequence>
<xsd:element name="width" type="xsd:integer"/>
<xsd:element name="height" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- StartPoint -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="StartPoint">
<xsd:complexContent>
<xsd:extension base="PathNode">
<xsd:sequence>
<xsd:element minOccurs="0" name="workload" type="Workload"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="inBindings" type="xsd:IDREF"/>
<!-- InBinding -->
<xsd:element minOccurs="0" name="precondition" type="Condition"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- StrategiesGroup -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="StrategiesGroup">
<xsd:complexContent>
<xsd:extension base="GRLmodelElement">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="strategies" type="xsd:IDREF"/>
<!-- EvaluationStrategy -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Stub -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Stub">
<xsd:complexContent>
<xsd:extension base="PathNode">
<xsd:sequence>
<xsd:element name="dynamic" type="xsd:boolean"/>
<xsd:element name="synchronizing" type="xsd:boolean"/>
<xsd:element name="blocking" type="xsd:boolean"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="bindings" type="PluginBinding"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Timer -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Timer">
<xsd:complexContent>
<xsd:extension base="WaitingPlace">
<xsd:sequence>
<xsd:element minOccurs="0" name="timeoutPath" type="xsd:IDREF"/> <!-- NodeConnection -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- UCMmap -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="UCMmap">
<xsd:complexContent>
<xsd:extension base="UCMmodelElement">
<xsd:sequence>
<xsd:element name="singleton" type="xsd:boolean"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="parentStub" type="xsd:IDREF"/>
<!-- PluginBinding -->
<xsd:element maxOccurs="unbounded" minOccurs="0" name="contRefs" type="ComponentRef"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="connections" type="NodeConnection"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="nodes" type="PathNode"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="comments" type="Comment"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- UCMmodelElement -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="UCMmodelElement">
<xsd:complexContent>
<xsd:extension base="URNmodelElement"/>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- UCMspec -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="UCMspec">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="enumerationTypes" type="EnumerationType"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="variables" type="Variable"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="scenarioGroups" type="ScenarioGroup"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="resources" type="GeneralResource"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="ucmMaps" type="UCMmap"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="components" type="Component"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="componentTypes" type="ComponentType"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="responsibilities" type="Responsibility"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="scenarioDefs" type="ScenarioDef"/>
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- URNlink -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="URNlink">
<xsd:complexContent>
<xsd:extension base="URNmodelElement">
<xsd:sequence>
<xsd:element name="type" type="xsd:string"/>
<xsd:element name="toElem" type="xsd:IDREF"/> <!-- URNmodelElement -->
<xsd:element name="fromElem" type="xsd:IDREF"/> <!-- URNmodelElement -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- URNmodelElement -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="URNmodelElement">
<xsd:sequence>
<xsd:element name="id" type="xsd:ID"/>
<xsd:element name="name" type="xsd:string"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="metadata" type="Metadata"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="toLinks" type="xsd:IDREF"/> <!-- URNlink -->
<xsd:element maxOccurs="unbounded" minOccurs="0" name="fromLinks" type="xsd:IDREF"/> <!-- URNlink -->
<xsd:element minOccurs="0" name="desc" type="Description"/>
<xsd:element minOccurs="0" name="concern" type="xsd:IDREF"/> <!-- Concern -->
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- URNspec -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="URNspec">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element minOccurs="0" name="ucmspec" type="UCMspec"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="metadata" type="Metadata"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="urnLinks" type="URNlink"/>
<xsd:element minOccurs="0" name="grlspec" type="GRLspec"/>
<xsd:element minOccurs="0" name="info" type="ConcreteURNspec"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="concerns" type="Concern"/>
</xsd:sequence>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Variable -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Variable">
<xsd:complexContent>
<xsd:extension base="UCMmodelElement">
<xsd:sequence>
<xsd:element default="Boolean" name="type" type="DatatypeKind"/>
<xsd:element minOccurs="0" name="enumerationType" type="xsd:IDREF"/> <!-- EnumerationType -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- WaitingPlace -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="WaitingPlace">
<xsd:complexContent>
<xsd:extension base="PathNode">
<xsd:sequence>
<xsd:element name="waitType" type="WaitKind"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Workload -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsd:complexType name="Workload">
<xsd:complexContent>
<xsd:extension base="UCMmodelElement">
<xsd:sequence>
<xsd:element default="ms" name="unit" type="TimeUnit"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>